#include "key.h"
#include "gd32e23x.h"

void KeyInit(void)
{
	rcu_periph_clock_enable(RCU_GPIOA);
	rcu_periph_clock_enable(RCU_GPIOB);
	
	gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_1);
	gpio_mode_set(GPIOB, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, GPIO_PIN_1);
	
	exti_deinit();
	exti_init(EXTI_1, EXTI_INTERRUPT, EXTI_TRIG_BOTH);
	exti_interrupt_flag_clear(EXTI_1);
    exti_interrupt_enable(EXTI_1);
	nvic_irq_enable(EXTI0_1_IRQn, 11);
}

uint8_t KeyCheckInput(KeyEnum key)
{
    if (key == KEY_KEY0) {
        return gpio_input_bit_get(GPIOA, GPIO_PIN_1);
    }
    else if (key == KEY_KEY1) {
        return gpio_input_bit_get(GPIOB, GPIO_PIN_1);
    }
    else {
        return 0;
    }
}

void KeyOpenExti(void)
{
    exti_interrupt_flag_clear(EXTI_1);
    exti_interrupt_enable(EXTI_1);
	nvic_irq_enable(EXTI0_1_IRQn, 11);
}

void KeyCloseExti(void)
{
    exti_interrupt_flag_clear(EXTI_1);
    exti_interrupt_disable(EXTI_1);
    nvic_irq_disable(EXTI0_1_IRQn);
}
